bitkeeper revision 1.1159.187.46 (41ada9acdxj1sndHML6zY6jvbR0CFg)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Wed, 1 Dec 2004 11:23:24 +0000 (11:23 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Wed, 1 Dec 2004 11:23:24 +0000 (11:23 +0000)
Fix netback driver to correctly free the net device struct.

linux-2.6.9-xen-sparse/drivers/xen/netback/interface.c

index 406d253fdae6294c0d7e760eab62a438740bf623..baa50ace22c19ea478d554ca18e0c8884b5346ff 100644 (file)
@@ -35,8 +35,8 @@ static void __netif_disconnect_complete(void *arg)
 
     /*
      * These can't be done in netif_disconnect() because at that point there
-     * may be outstanding requests at the disc whose asynchronous responses
-     * must still be notified to the remote driver.
+     * may be outstanding requests in the network stack whose asynchronous
+     * responses must still be notified to the remote driver.
      */
     unbind_evtchn_from_irq(netif->evtchn);
     vfree(netif->tx); /* Frees netif->rx as well. */
@@ -84,7 +84,7 @@ void netif_create(netif_be_create_t *create)
     unsigned int       handle = create->netif_handle;
     struct net_device *dev;
     netif_t          **pnetif, *netif;
-    char               name[IFNAMSIZ] = {};
+    char               name[IFNAMSIZ];
 
     snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle);
     dev = alloc_netdev(sizeof(netif_t), name, ether_setup);
@@ -116,7 +116,7 @@ void netif_create(netif_be_create_t *create)
         {
             DPRINTK("Could not create netif: already exists\n");
             create->status = NETIF_BE_STATUS_INTERFACE_EXISTS;
-            kfree(dev);
+            free_netdev(dev);
             return;
         }
         pnetif = &(*pnetif)->hash_next;
@@ -137,7 +137,7 @@ void netif_create(netif_be_create_t *create)
         DPRINTK("Could not register new net device %s: err=%d\n",
                 dev->name, err);
         create->status = NETIF_BE_STATUS_OUT_OF_MEMORY;
-        kfree(dev);
+        free_netdev(dev);
         return;
     }
 
@@ -176,7 +176,7 @@ void netif_destroy(netif_be_destroy_t *destroy)
  destroy:
     *pnetif = netif->hash_next;
     unregister_netdev(netif->dev);
-    kfree(netif->dev);
+    free_netdev(netif->dev);
     destroy->status = NETIF_BE_STATUS_OKAY;
 }